package com.zhuhjay.common.base.util;

import com.zhuhjay.common.base.constant.DataConstant;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * @author ZhuHJay
 * @date 2023/3/4 16:15
 */
public class BigDecimalUtils {

    private static final BigDecimal KB = BigDecimal.valueOf(DataConstant.KB);
    private static final BigDecimal MB = BigDecimal.valueOf(DataConstant.MB);
    private static final BigDecimal GB = BigDecimal.valueOf(DataConstant.GB);


    /**
     * 转换为GB, 并保留两位小数
     * @param bytes 字节数
     * @return GB
     */
    public static double byte2Gb(long bytes) {
        return BigDecimal.valueOf(bytes).divide(GB, 2, RoundingMode.FLOOR).doubleValue();
    }

    /**
     * 转换为MB, 并保留两位小数
     * @param bytes long 字节数
     * @return MB
     */
    public static double byte2Mb(long bytes) {
        return BigDecimal.valueOf(bytes).divide(MB, 2, RoundingMode.FLOOR).doubleValue();
    }

    /**
     * 转换为MB, 并保留两位小数
     * @param bytes BigDecimal 字节数
     * @return MB
     */
    public static double byte2Mb(BigDecimal bytes) {
        if (bytes == null) {
            return 0;
        }
        return bytes.divide(MB, 2, RoundingMode.FLOOR).doubleValue();
    }

    /**
     * 转换为KB, 并保留两位小数
     *
     * @param bytes long 字节数
     * @return KB
     */
    public static double byte2Kb(long bytes) {
        return BigDecimal.valueOf(bytes).divide(KB, 2, RoundingMode.FLOOR).doubleValue();
    }

}
